package org.example.service;

import com.github.pagehelper.PageInfo;
import org.example.pojo.domain.Reservation;
import org.example.pojo.vo.ReservationVo;
import org.example.pojo.vo.ReservationWithFeedbackVo;

import java.util.List;

public interface ReservationService {
    List<Reservation> listReservationsByUser(Integer userId);
    void makeReservation(Reservation reservation);
    void cancelReservation(Integer reservationId);
    Reservation getReservationDetails(Integer reservationId);
    int getVisitorsCount() ;
    // 更新预约状态为 "completed"
    void markReservationAsCompleted(Integer reservationId);
    /**
     * 分页获取指定用户的预约，并附带展览信息
     */
    PageInfo<ReservationVo> listReservationsByUser(int userId, int page, int size);

    PageInfo<ReservationVo> listReservationsByStatus(int userId, String status, int page, int size);

    boolean hasFeedbackForReservation(Integer exhibitionId);

    PageInfo<ReservationWithFeedbackVo> listCompletedWithFeedback(int userId, String status, int page, int size);
}
